package com.huanghuai.retail.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huanghuai.retail.dto.SInventoryDto;
import com.huanghuai.retail.entity.PInformation;
import com.huanghuai.retail.entity.SInventory;

import java.util.List;
import java.util.Map;

/**
 * @author You do
 * @description 针对表【s_inventory】的数据库操作Service
 * @createDate 2023-05-03 21:06:20
 */
public interface SInventoryService extends IService<SInventory> {


    /**
     * 根据库存id或产品id删除，并且当前库存为0
     *
     * @param id        id
     * @param productId 产品id
     * @return boolean
     */
    boolean deleteIfNumIsZero(Long id, Long productId, Long storageId);

    /**
     * 通过产品id查询库存记录
     *
     * @param productId 产品id
     * @return {@link SInventoryDto}
     */
    List<SInventoryDto> getByIdWithDto(Long productId);

    /**
     * 分页查询所有库存信息
     *
     * @param page        页面
     * @param pageSize    页面大小
     * @param productName 产品名称
     * @param storageIds  存储id
     * @param typeIds     类型id
     * @return {@link Page}<{@link SInventoryDto}>
     */
    Page<SInventoryDto> pageDto(Integer page, Integer pageSize,
                                String productName, Long[] storageIds,
                                Long[] typeIds);

    /**
     * 根据产品id及库存id更新
     *
     * @param sInventory 年代库存
     * @return boolean
     */
    boolean updateByProIdWithStorageId(SInventory sInventory);

    /**
     * 根据仓库id去查对应的商品id
     *
     * @param storageId
     * @return
     */
    Map<Long,String> findShopIdByStorageId(Integer storageId);


    Integer getNumByProductId(Long productId,Long storageId);

    Integer getNumsByStorageId(Long storageId);

    Long getStorageIdByProductId(Long productId,Long storageId);
}
